package it.scambiocorse.start.controller;

import it.scambiocorse.dao.UtenteService;
import it.scambiocorse.model.UtenteType;
import it.scambiocorse.utils.ResourceManager;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class CompletamentoRegistrazioneFormController extends SimpleFormController {
	
	protected Object formBackingObject(HttpServletRequest request) throws Exception {
    logger.warn("*** Sono in CompletamentoRegistrazioneFormController-formBackingObject ");

    UtenteType dettaglio = null;
    HttpSession session = request.getSession(false);
		if (session == null) {
			logger.warn("Sessioe Scaduta");
			return new ModelAndView("sessioneScaduta");
		} 
			UtenteType utente = new UtenteType();

			
			session.setAttribute("dettaglio", dettaglio);

    logger.warn("*** sto uscendo in CompletamentoRegistrazioneFormController-formBackingObject ");
    return utente;
    
  }

	@Override
	protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
		logger.warn("onSubmit(...)");
  	UtenteType dettaglio = (UtenteType)command;
  
  	ModelAndView mav = new ModelAndView("registrazioneCompleta");
  	
  	try {
  
  		
  		byte[] pdfDoc = null;
    	String nomeFile = null;
    	boolean check = false;
  		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
      org.springframework.web.multipart.MultipartFile multipartFile1 = multipartRequest.getFile("scanDocuBanca");
      if (multipartFile1 != null && !multipartFile1.isEmpty())
      {		
	      	nomeFile = multipartFile1.getOriginalFilename();
	        String tipoFile = nomeFile.substring(nomeFile.lastIndexOf(".") + 1).toUpperCase();
	        //nomeFile = nomeFile.substring(nomeFile.lastIndexOf("\\") + 1, nomeFile.lastIndexOf(".")).toUpperCase();
	        
	        // TEST PER VEDERE SE TORNA DOPO IL CATCH NULL
	        pdfDoc = multipartFile1.getBytes();
	        logger.error("1-contentType: " + multipartFile1.getContentType());
	        logger.error("1-size: " + multipartFile1.getSize());
	        logger.error("1-originalFilename: " + multipartFile1.getOriginalFilename());
	        logger.error("1-tipo: " + tipoFile);
	        logger.error("1-nome: " + nomeFile);
	        if (!tipoFile.equals("PDF")) {
	            logger.error("1-Tipo file non gestito");
	            errors.rejectValue("utente.registroImprese.docuScan", "", "Tipo allegato non gestito (allegare un file in formato PDF)");
	            
	        } else {
//	        	dettaglio.getIdes()RegistroImprese().setDocuScan(pdfDoc);
	        }
      } else {
      	errors.rejectValue("utente.registroImprese.docuScan", "", "Per completare la registrazione e' necessaria la scansione della propria iscrizione al registro delle imprese");
      }

      
          
  		if (!errors.hasErrors()){
  			UtenteService utenteDao = (UtenteService)ResourceManager.getBean("utenteService");
//    		utenteDao.inserisciIdes(dettaglio.getRegistroImprese());
    			
  		} else {
  			mav = new ModelAndView("inserimentoRegistro");
  		}
  		
		}catch (Exception e) {
			logger.error("SI E' VERIFICATO UN ERRORE");
			logger.error("Utente: "+dettaglio.getIdUser());
			logger.error(e);
			return new ModelAndView("gestioneErrore").addObject(e);
		}

  	
  	
  	return mav;
  }
  
	
	
  protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
  }
}